package com.zxl.designpattern.behavioral.strategy;

/**
 * 导航器类，作为上下文角色，持有一个路线策略并使用它来构建路线.
 * 扮演策略模式中的环境角色（使用策略的对象）
 */
public class Navigator {

    // 起点
    private final String startLocation;
    // 终点
    private final String destination;
    // 路线策略
    private RouteStrategy routeStrategy;
    
    /**
     * 构造函数，初始化起点和终点
     * @param startLocation 起点位置
     * @param destination 终点位置
     */
    public Navigator(String startLocation, String destination) {
        this.startLocation = startLocation;
        this.destination = destination;
    }
    
    /**
     * 设置路线策略
     * @param routeStrategy 路线策略对象
     */
    public void setRouteStrategy(RouteStrategy routeStrategy) {
        this.routeStrategy = routeStrategy;
    }
    
    /**
     * 构建路线，使用当前设置的策略
     */
    public void buildRoute() {
        if (routeStrategy == null) {
            System.out.println("请先选择一种出行方式");
            return;
        }
        // 使用具体的策略构建路线
        routeStrategy.buildRoute(startLocation, destination);
    }
    
    /**
     * 获取起点位置
     * @return 起点位置
     */
    public String getStartLocation() {
        return startLocation;
    }
    
    /**
     * 获取终点位置
     * @return 终点位置
     */
    public String getDestination() {
        return destination;
    }
}    